#funcion para listar el contenido de un directorio
function echoDirContent() {
  if [ -d "$1" ];then
    for i in "$1"/*
    do
      if [ -d "$i" ];then
	  dirname=`echo "$i"|sed 's=^.*/\([^/]*\)$=\1='`
	  echo "	- dir: $dirname"
      elif [ -f "$i" ]; then
	  filename=`echo "$i"|sed 's=^.*/\([^/]*\)$=\1='`
	  echo "	- file: $filename"
      fi
    done
  fi
}

function ExportarVariables {
     #------------------------
    export BINDIR
    export MAEDIR
    export ARRIDIR
    export ACEPDIR
    export RECHDIR
    export PROCDIR
    export REPODIR
    export CONFDIR
    export GRUPO
    export LOGDIR
    export LOGEXT
    export DATASIZE
    export LOGSIZE
    export SECUENCIA1 
    export SECUENCIA2
    #------------------------	
	return 0
}
#--------------------------------------

#obtengo las variables necesarias del config (y aprovecho para verificar la instalacion
#la ruta de conf siempre va a estar en el mismo lugar
CONFDIR="../confdir" #esto quedo viejo,borrarlo
tmp="$PWD"
encontrado="no"
while [ "$tmp" != "/" -a $encontrado = "no" ]; do
	if [ ! -d "$tmp/confdir" ];then
		tmp=$(dirname "$tmp")
	else
		encontrado="si"
	fi;
	done;
if [ $encontrado = "si" ]; then
	CONFDIR="$tmp/confdir"
	LOGDIR="$tmp/logdir"
else
	echo "No se encontro el archivo de configuraciones, por favor reinstale el sistema."
	return 1
fi;
export LOGDIR
#inicializo el archivo de log para este comando (a que se refiere con inicializar?)
./LoguearV5.sh -c "IniciarV5" -m "Inicio de Ejecucion" -t "I"
#--------------------------------------
declare -r ArchivoConfiguracion="$CONFDIR/InstalaV5.conf" > /dev/null
declare -a ArrayConfigKey=( "BINDIR" "MAEDIR" "ARRIDIR" "ACEPDIR" "RECHDIR" "PROCDIR" "REPODIR" "CONFDIR" "GRUPO" "LOGDIR" "LOGEXT" "DATASIZE" "LOGSIZE" "SECUENCIA1" "SECUENCIA2" )
declare -a ArrayConfigValue
declare -a ArrayConfigMissingValue  
declare -r IndiceMaxVect=`expr ${#ArrayConfigKey[@]} - 1`

instalacionIncompleta=0
if [ ! -f "$ArchivoConfiguracion" ]; then
  instalacionIncompleta=1
else
  #Recupero todas las rutas guardadas en InstalarV5.conf
  #si no encuentra la entrada...pone "NULL"
  for i in $( eval echo {0..$IndiceMaxVect} ) on the
  do
    ArrayConfigValue[$i]=`cat "$ArchivoConfiguracion"|grep "${ArrayConfigKey[$i]}"|sed 's/^[^=]*=\([^=]*\)=.*$/\1/'`
    if [ -z "${ArrayConfigValue[$i]}" ]; then
	    ArrayConfigValue[$i]="NULL"
	    instalacionIncompleta=1
	    ArrayConfigMissingValue[$missingIndex]="${ArrayConfigKey[$i]}"
	    missingIndex=`expr $missingIndex + 1`
    fi
  done
  
  declare -r IndiceVectMissing=`expr ${#ArrayConfigMissingValue[@]} - 1`
  #seteo las variable por separado
   #seteo las variable por separado
  BINDIR="${ArrayConfigValue[0]}"
  MAEDIR="${ArrayConfigValue[1]}"
  ARRIDIR="${ArrayConfigValue[2]}"
  ACEPDIR="${ArrayConfigValue[3]}"
  RECHDIR="${ArrayConfigValue[4]}"
  PROCDIR="${ArrayConfigValue[5]}"
  REPODIR="${ArrayConfigValue[6]}"
  CONFDIR="${ArrayConfigValue[7]}"
  GRUPO="${ArrayConfigValue[8]}"
  LOGDIR="${ArrayConfigValue[9]}"
  LOGEXT="${ArrayConfigValue[10]}"
  DATASIZE="${ArrayConfigValue[11]}"
  LOGSIZE="${ArrayConfigValue[12]}"
  SECUENCIA1="${ArrayConfigValue[13]}"
  SECUENCIA2="${ArrayConfigValue[14]}"
fi

#me fijo que este comando no se haya ejecutado ya para esta sesion de usuario (para no setear las variables de nuevo)
#0 si no, >0
yaFueInicializado=`echo "$PATH"|grep "$BINDIR" -c`

#por ahora seteo esto por defecto
#yaFueInicializado="0"


#sed 's/^[^-]*-\([^-]*\)-.*$/\1/' param-nombreUsuario-masParams
#cat $ArchivoLog|sed 's/^[^-]*-\([^-]*\)-.*$/\1/' > prueba.txt #|grep whoami  #grep 'BINDIR'|

#fueInicializado=0
if test $yaFueInicializado -gt 0
then
  #fueInicializado=1
  #muestro mensaje de que no se puede reinicializar
  echo "TP SO7508 Segundo Cuatrimestre 2012. Tema V Copyright © Grupo 09
Librería del Sistema: $CONFDIR"
  echoDirContent "$CONFDIR"
  echo "Ejecutables: $BINDIR" 
  echoDirContent "$BINDIR"
  echo "Archivos maestros: $MAEDIR"
  echoDirContent "$MAEDIR"
  echo "Directorio de arribo de archivos externos: $ARRIDIR
Archivos externos aceptados: $ACEPDIR
Archivos externos rechazados: $RECHDIR
Archivos procesados: $PROCDIR
Reportes de salida: $REPODIR
Logs de auditoria del Sistema: $LOGDIR/IniciarV5.$LOGEXT
DataSize: $DATASIZE Mb
LogSize: $LOGSIZE Kb
Estado del Sistema: INICIALIZADO
No es posible efectuar una reinicializar el sistema.
Proceso de Inicialización Cancelado"
  ##exit 1

else
  #si el usuario no habia corrido la inicializacion, inicializo y lo agrego a la lista de usuarios inicializados (si todo se inicializa bien)
  #seteo PATH (como "./" o de alguna otra forma?)(el PATH adonde apunta?)
  if [ -d "$BINDIR" ]; then
    PATH="$BINDIR:$PATH"
    export PATH
  fi
  
  #checkeo si la instalacion esta completa con la variable seteada antes cuando obtuve las variables del config
  
  if test $instalacionIncompleta -gt 0
  then
    #si no esta completo
    #si no esta completo
    echo "TP SO7508 Segundo Cuatrimestre 2012. Tema V Copyright © Grupo 09"
    echo "Componentes Existentes:
Ejecutables: $BINDIR" 
    echoDirContent "$BINDIR"
    echo "Archivos maestros: $MAEDIR"
    echoDirContent "$MAEDIR"
    echo "Componentes faltantes:"
    for j in $( eval echo {0..$IndiceVectMissing} ) 
    do
      echo "${ArrayConfigMissingValue[$j]}"
    done
    echo "Estado de la instalacion: INCOMPLETA
Proceso de Inicialización Cancelado"

    #exit 2
  else

    echo "TP SO7508 Segundo Cuatrimestre 2012. Tema V Copyright © Grupo 09
Librería del Sistema: $CONFDIR"
    echoDirContent "$CONFDIR"
    echo "Ejecutables: $BINDIR" 
    echoDirContent "$BINDIR"
    echo "Archivos maestros: $MAEDIR"
    echoDirContent "$MAEDIR"
    echo "Directorio de arribo de archivos externos: $ARRIDIR
Archivos externos aceptados: $ACEPDIR
Archivos externos rechazados: $RECHDIR
Archivos procesados: $PROCDIR
Reportes de salida: $REPODIR
Logs de auditoria del Sistema: $LOGDIR/IniciarV5.$LOGEXT
DataSize: $DATASIZE Mb
LogSize: $LOGSIZE Kb
Estado del Sistema: INICIALIZADO"

    #------------------------
    #exporto las variables
    ExportarVariables
    #------------------------

    #me fijo si ya se esta corriendo DetectaV5
	    #metodo alternativo
	    #procesosCoincidentes=`ps ax | grep "DetectaV5" -c` #| grep -v "grep" 
	    #resto la coincidencia que se da por el proceso grep con el parametro de mi busqueda
	    #procesosCoincidentes=`expr $procesosCoincidentes - 1`

    DetectaProcessId=`ps -ef | grep "DetectaV5.sh" | grep -v "grep" | awk '{print $2}'`

    if [[ -n "$DetectaProcessId" && "$DetectaProcessId" -gt 0 ]] 
    then
      #Se esta corriendo
      MensajeDeFin="Demonio ya estaba corriendo bajo el Nro: $DetectaProcessId
Proceso de Inicialización Concluido"
      echo "$MensajeDeFin"
    else
      #No se esta corriendo
	  #nohup DetectaV5.sh >& /dev/null & #en background
	  StartD.sh "DetectaV5.sh"
      DetectaProcessId=`ps -ef | grep "DetectaV5.sh" | grep -v "grep" | awk '{print $2}'`   
      #verifico que se este ejecutando bien
      if [[ -n "$DetectaProcessId" && "$DetectaProcessId" -gt 0 ]] 
      then
	MensajeDeFin="Demonio corriendo bajo el Nro: $DetectaProcessId
Proceso de Inicialización Concluido"
	echo "$MensajeDeFin"

	LoguearV5.sh -c "IniciarV5" -m "$MensajeDeFin" -t "I"
      else
	   echo "Proceso de Inicialización Concluido"
      fi

    fi
  
  fi

fi

#cierro? el archivo de log.
LoguearV5.sh -c "IniciarV5" -m "Fin de Ejecucion" -t "I"
#exit 0

